#include "../import/head.h"
#include "helper_net.h"
#include "../import/import.h"
#include "../data_struct/head.h"
#include "../global/head.h"
#include "../macro/head.h"
#include "../msg/head.h"
#include "net_tcp.h"
#include "net_udp.h"

////////////////////////////////////////////////////////////////////////////////////////////
// 

namespace xos_sgsj
{

    //////////////////////////////////////////////////////////////////////////////////////////////////////////
    // 

    helper_net::helper_net()
    {
    }

    helper_net::~helper_net()
    {
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // net ret msg proc

    int helper_net::proc( xos::i_msg * pMsg )
    {
        int ret = 0;

        int nMsg = pMsg->get_int( 0, 0 );

        switch( nMsg )
        {
            // 
            // tcp
            // 
        case xos_aio::i_aio::AIO_TCP_INIT_RET:
        case xos_aio::i_aio::AIO_TCP_ACCPET_RET:
        case xos_aio::i_aio::AIO_TCP_CONNECT_RET:
        case xos_aio::i_aio::AIO_TCP_RECV_RET:
        case xos_aio::i_aio::AIO_TCP_SEND_RET:
        case xos_aio::i_aio::AIO_TCP_CLOSE_HANDLE_RET:
            {
                net_tcp obj;
                ret = obj.proc( pMsg );
            }
            break;
            // 
            // udp
            // 
        case xos_aio::i_aio::AIO_UDP_INIT_RET:
        case xos_aio::i_aio::AIO_UDP_RECV_RET:
        case xos_aio::i_aio::AIO_UDP_SEND_RET:
        case xos_aio::i_aio::AIO_UDP_CLOSE_HANDLE_RET:
            {
                net_udp obj;
                ret = obj.proc( pMsg );
            }
            break;
        default:
            {
                ret = 1;
            }
            break;
        }

        if( pMsg )
        {
            pMsg->release();
            pMsg = 0;
        }

        return ret;
    }

} // xos_sgsj
